bitkeeper revision 1.1713.3.3 (42b2995e93GNUwPpV6yP21Fl3iIRRQ)
authorcl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Fri, 17 Jun 2005 09:35:26 +0000 (09:35 +0000)
committercl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Fri, 17 Jun 2005 09:35:26 +0000 (09:35 +0000)
Makefile:
  Add xs_dom0_test program to test IOCTL_PRIVCMD_INITDOMAIN_STORE.
xs_dom0_test.c:
  new file
From: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
.rootkeys
tools/xenstore/Makefile
tools/xenstore/xs_dom0_test.c [new file with mode: 0644]

index 98804345abf1e1fed08d9507eb66b49f76d1d6c8..4d3b69442d38e4eca9433ffd1fdecb31e46afcab 100644 (file)
--- a/.rootkeys
+++ b/.rootkeys
 42a57d99-zLxBjzC7rfj_perV-orUg tools/xenstore/xenstored_watch.h
 42a57d99BnkhISKgCCRcUqhteyuxCw tools/xenstore/xs.c
 42a57d99FyiYSz9AkKKROrRydnA-gQ tools/xenstore/xs.h
+42b29922EYQ87Y4fwZXSkEHgtQk7CQ tools/xenstore/xs_dom0_test.c
 42a57d99SrtsJCDUlKyRPf3EX86A1Q tools/xenstore/xs_lib.c
 42a57d99L2pYeMFyjQ_4Rnb17xTSMg tools/xenstore/xs_lib.h
 42a57d99Kl6Ba8oCHv2fggl7QN9QZA tools/xenstore/xs_random.c
index 3bfe8cb9570f6d0a1ae620e8377bc7880789589e..0a78cfbad77173606d3a672bfe525a023d055c18 100644 (file)
@@ -27,7 +27,7 @@ TESTENV=XENSTORED_ROOTDIR=$(TESTDIR) XENSTORED_RUNDIR=$(TESTDIR)
 
 all: xen xenstored libxenstore.a libxenstore-pic.a
 
-testcode: xen xs_test xenstored_test xs_random
+testcode: xen xs_test xenstored_test xs_random xs_dom0_test
 
 xen:
        ln -sf $(XEN_ROOT)/xen/include/public $@
@@ -63,8 +63,8 @@ libxenstore.a: $(LIB_OBJS_A)
 libxenstore-pic.a: $(LIB_OBJS_PIC)
 
 clean: testsuite-clean
-       rm -f *.o *.opic *.a
-       rm -f xs_test xenstored xenstored_test xs_random xs_stress xen
+       rm -f *.o *.opic *.a xen
+       rm -f xs_test xenstored xenstored_test xs_random xs_stress xs_dom0_test
        -$(RM) $(PROG_DEP)
 
 check: testsuite-run randomcheck stresstest
@@ -87,6 +87,9 @@ stresstest: xs_stress xenstored_test
        rm -rf $(TESTDIR)/store
        export $(TESTENV); PID=`./xenstored_test --output-pid`; ./xs_stress 10000; ret=$$?; kill $$PID; exit $$ret
 
+xs_dom0_test: xs_dom0_test.o utils.o
+       $(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -lxc -o $@
+
 TAGS:
        etags `find . -name '*.[ch]'`
 
diff --git a/tools/xenstore/xs_dom0_test.c b/tools/xenstore/xs_dom0_test.c
new file mode 100644 (file)
index 0000000..8b3b5e6
--- /dev/null
@@ -0,0 +1,43 @@
+/* Test introduction of domain 0 */
+#include <linux/ioctl.h>
+#include <sys/ioctl.h>
+#include "xs.h"
+#include "utils.h"
+#include <xc.h>
+#include <xen/linux/privcmd.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/mman.h>
+
+int main()
+{
+       int h, local = 0, kernel = 0;
+       long err;
+       void *page;
+
+       h = xc_interface_open();
+       if (h < 0)
+               barf_perror("Failed to open xc");
+
+       if (xc_evtchn_bind_interdomain(h, DOMID_SELF, 0, &local, &kernel) != 0)
+               barf_perror("Failed to bind interdomain");
+
+       printf("Got ports %i & %i\n", local, kernel);
+
+       err = ioctl(h, IOCTL_PRIVCMD_INITDOMAIN_STORE, kernel);
+       if (err < 0)
+               barf_perror("Failed to initialize store");
+       printf("Got mfn %li\n", err);
+
+       page = xc_map_foreign_range(h, 0, getpagesize(), PROT_READ|PROT_WRITE,
+                                   err);
+       if (!page)
+               barf_perror("Failed to map page %li", err);
+       printf("Mapped page at %p\n", page);
+       printf("Page says %s\n", (char *)page);
+       munmap(page, getpagesize());
+       printf("unmapped\n");
+       
+       return 0;
+}
+